package scales.xml.impl
import scales.xml.{XmlVersion, Xml10, EmptyNamespace, Namespace}
trait DefaultXmlVersion {
implicit val defaultVersion : XmlVersion = Xml10
}
object NamespaceDefaults {
protected[xml] val namespace = Namespace("")(Xml10,IsFromParser)
val noNamespace = EmptyNamespace
}
object QNameCharUtils {
import scales.org.apache.xerces.util._
def validLocalName( name : String )(implicit ver : XmlVersion) =
validXmlName(name) && (
if (name.length > 2)
name.substring(0,2).toLowerCase != "xml"
else
true
) &&
name.indexOf(':') == -1
def validXmlName( name : String )(implicit ver : XmlVersion) =
if (ver eq Xml10)
XMLChar.isValidName(name)
else
XML11Char.isXML11ValidName(name)
def validXmlPrefix( prefix : String )(implicit ver : XmlVersion) =
validXmlName(prefix)
prefix.indexOf(':') == -1
def validXmlNamespace( namespace : String )(implicit ver : XmlVersion) =
if ((ver eq Xml10) && (namespace.trim.length == 0))
false
else
true
def validateLocalName( validLocal : String ) ( implicit ver : XmlVersion) =
if (validLocalName(validLocal))
validLocal
else
error("The local name '"+validLocal+"' is not valid for Xml "+ver.version)
}